1
Проектирование для гибкости: Интерфейс таблицы
AI020Lesson 4
00:00

Основа гибкой системы заключается в определении строгого внутреннего договора или интерфейса, которому должны следовать объекты. В этом контексте мы определяем интерфейс таблицы где каждый объект ячейки гарантирует наличие трех конкретных методов: minWidth(), minHeight(), и draw(width, height).

1. Договор интерфейса

Стандартизируя эти методы, логика разметки может вычислять глобальные размеры строк и столбцов, не зная внутренних типов данных отдельных ячеек. Это классический пример полиморфизма на основе интерфейсов.

2. Реализация класса TextCell

Конструктор TextCell готовит исходные данные, разбивая строки на массивы построчно. Это переносит сложность с этапа отрисовки на этап создания экземпляра.

this.text = text.split("\n");

3. Определённая отрисовка

Конструктор draw(width, height) метод обеспечивает идеальное заполнение каждой выходной ячейки с помощью вспомогательной функции repeat() вспомогательной функции. Это сохраняет вертикальное и горизонтальное выравнивание независимо от длины содержимого.

имяКилиманджаровысота5895Столбцы выравниваются с учётом вычисленного minWidth()

$$\text{Заполнение} = \text{Ширина} - \text{длина строки}$$

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>